package file

import (
	"html/template"
	"os"
	"path/filepath"
	"gitee.com/kmyss/base-tool/errcode"
)

var (
	// TemplateFileError ...
	TemplateFileError = errcode.NewError(baseCode+100, "模板文件异常")
)

// WriteByTMPLFunc 利用模板写文件
// 简单的模板写文件函数,模板中不能包含
// 输入：  模板路径  输出路径  参数
func WriteByTMPLSimple(templatePath string, outPath string, values interface{}) error {
	return WriteByTMPLFunc(templatePath, outPath,values,nil)
}

// WriteByTMPLFunc 利用模板写文件
// 可以匹配函数的模板文件生成
// 输入：  模板路径  输出路径   参数  调用的函数
func WriteByTMPLFunc(templatePath string, outPath string, values interface{}, funcs template.FuncMap) error {
	return writeByTMPLAll(templatePath,filepath.Base(templatePath),outPath,values,funcs)
}

func writeByTMPLAll(templatePath string, templateName string,outPath string, values interface{}, funcs template.FuncMap) error {
	tmpl := template.New(templateName)
	if funcs != nil {
		tmpl = tmpl.Funcs(funcs)
	}
	tmpl = template.Must(tmpl.ParseFiles(templatePath))

	file, err := os.Create(outPath)
	if err != nil {
		return CanNotCreateError.WithDetails(err.Error())
	}

	defer file.Close()

	return tmpl.Execute(file, values)
}
